#library(dplyr) 包
library(dplyr)

library(readxl)

#导入数据
novel <- read_excel("novel(1).xlsx")
#按小说类型分组
#管道函数，把左侧的值发送给右侧的表达式，并作为右侧表达式函数的第一个参数 %>
#group_by函数是dplyr包中的一个核心函数，用于对数据进行分组操作。
novel.小说类型=novel %>% group_by(小说类型)

#对分组后的数据框按评分的均值和评论数的最大值汇总
#summarise函数是R语言中的数据整理函数之一，它可以对数据进行汇总统计。该函数可以对数据框中的列进行计算，并返回一个新的数据框。
novel.小说类型 %>% summarise("平均评分"=mean(评分),"最大评论数"=max(评论数))

#小说类型建立表得到各类型下频数
#table(x)函数，x表示要进行统计的向量或因子，table函数会对x中的元素进行计数，并返回一个频数表。
a <- table(novel$小说类型)

#按频数降序排列
# 方法一
sort(a, decreasing = TRUE)
# 方法二
a[order(a, decreasing = TRUE)]
# 方法三
b = table(novel$小说类型) %>% sort(decreasing = TRUE)

# 利用barplot绘制柱状图
barplot(b[1:5], names.arg = names(b)[1:5], ylab = "频数", xlab = "", col = c("gold", "green", "red", "blue", "grey"))

# title() 函数用于为图形添加主标题和副标题
title("各类小说频数(Make By 2207124039 毛若沣)")

# 假设novel是你的数据框，并且它有一个名为'总点击数'的列
novel$总点击数 = as.integer(novel$总点击数)  # 将总点击数转换为整数

# 按小说类型分组，计算每组的平均点击量（以千为单位），并按降序排列
means <- novel %>%
  group_by(小说类型) %>%
  summarise(平均点击量 = mean(总点击数/1000)) %>%  # 计算平均点击量，并命名为'平均点击量'
  arrange(desc(平均点击量))  # 按'平均点击量'降序排列

# 绘制柱状图，显示前5种小说类型的平均点击量
barplot(means$平均点击量[1:5], names.arg = means$小说类型[1:5], ylab = "点击量", xlab = "", col = c("gold", "green", "red", "blue", "grey"))

# title() 函数用于为图形添加主标题和副标题
title("各类平均点击量(Make By 2207124039 毛若沣)")

novel$小说类别="其他"

# 建立新变量“小说类型”，将小说类型进行简要合并
novel$小说类别[novel$小说类型 == "都市小说" | novel$小说类型 == "职场小说"] = "都市类小说"
novel$小说类别[novel$小说类型 == "科幻小说" | novel$小说类型 == "玄幻类小说" | novel$小说类型 == "奇幻类小说"] = "幻想类小说"
novel$小说类别[novel$小说类型 == "武侠小说" | novel$小说类型 == "仙侠小说"] = "武侠类小说"

# 求出每一类别所占百分比
ratio = table(novel$小说类别)/sum(table(novel$小说类别))
# 这里代码不完整，可能需要使用table函数或者dplyr包的函数来计算百分比
label1 = names(ratio)
label2 = paste0(round(ratio, 2) * 100, "%")

# 绘制饼图
pie(ratio, labels = paste(label1, label2, sep = "\n"), col = c("red", "blue", "gold", "green"))
title("小说类型占比(Make By 2207124039 毛若沣)")
# 定义标签
# paste0函数是paste函数的简化版本，它的默认分隔符是空字符串，即sep=""
# 这里代码不完整，可能需要使用paste0函数来创建标签

# 对小说的总字数进行处理，转换为整数，并且去除NA值，然后按字数降序排序，取前5个
c = sort(na.omit(as.integer(novel$总字数)) / 10000, decreasing = T)[1:1500]

# 绘制直方图，显示总字数的分布情况
hist(c, breaks = 10, xlab = "总字数（万字）", ylab = "频数", col = "gold", border = NA)

data("AirPassengers")

plot(AirPassengers)


boxplot(as.numeric(novel$总字数))


novel$总点击数=as.numeric(novel$总点击数)
novel$总字数=as.numeric(novel$总字数)
novel$会员周点击数=as.numeric(novel$会员周点击数)

d = novel[,5:7]


r <- cor(d,use = "na.or.complete")


corrplot :: corrplot(r)
